perm filename DRAW.F4[DRW,LCS]7 blob sn#635554 filedate 1982-01-21 generic text, type T, neo UTF8
C***** FOLLOWING IS FILE 'DRAW.CMD' **********
C***	DRAW[DRW,LCS],MSSIO[MS,LCS],CB[DRW,LCS]
C***	,DRAWSM[DRW,LCS],DPYIT[DRW,LCS],DREDIT[DRW,LCS],FILLER[DRW,LCS]
C***	,CURSOR[MSS,LCS],SUBSLM[DRW,LCS]

C  'G' OR <CR> = GET.  'A'=ADD TO COMBINED FILE.
C P=PLOT 
C IN DRAW SECTION: J=JUMP(INVIS. VECT.)
C  F=JUMP AND BEGIN FILL SECTION.  FX=EXIT AND FILL ALL.
C SINGLE ITEM IS RESTRICTED TO 350 WDS. 10 ITEMS OR 350 WDS PER FILE.
C  'O' MAKES CURRENT DPY INTO OVERLAY.
 
C VECTORS ARE PACKED 1 TO A WORD IN THE FOLLOWING STRANGE MANNER:
C          ABCDEFGHI REPRESENTS A 9-DIGIT NUMBER.
C   A=0=VISIBLE VECT., A=1=INVISIBLE, A=2=INVIS. AND START OF FILLED AREA.
C   BCDE=THE X COORDINATE, B=0=POSITIVE, B=1=NEG. (THE RANGE IS + OR - 999)
C   FGHI=THE Y COORDINATE, F=0=POSITIVE, F=1=NEG. (THE RANGE IS + OR - 999)
C    THUS   100671025  MEANS INVIS. VECTOR TO X=67, Y=-25.

	COMMON /SAV/JCLEF(10),KCLEF(10),NMLST(10) /INCR/INCR
CIRC	COMMON /RC/MCLEF(400)
	COMMON /RC/MCLEF(1100),IST(4000)
C1/82	COMMON /RC/MCLEF(400),IST(4000)
	1 /GRID/GRID
CIRC	1 /DPY/NDP,IOV,GRID
C	NDP=BUFFER NUM FOR OUTPUT, IOV=BUFFER NUM FOR INPUT
	DIMENSION JST(1150),INP(72),V(30)
C1/82	DIMENSION JST(450),INP(72),V(30)
	COMMON/ZN/SCLEF(2,1100),DDD /ED/KED,NEXT,NN,NX,NY,J
	COMMON XX(100),G(100),NJ,QF(512),RF(512),S(100),K
	COMMON/NFF/NF(513) /LL/LL /RZ/RSZ,RJB,CENTR
CIRC	COMMON/LETS/LETS(14)  /FL/IC,N,NQ,RZ
CIRC	DATA LETS/'G','S','M','D','R','P','A','F','E','Z',
CIRC	1'O','L','W','H'/, ISIZE/2000/, RJB/-20./,CENTR/-26./
	COMMON/LETS/LETS(15)  /FL/IC,N,NQ,RZ
	DATA LETS/'G','S','M','D','R','P','A','F','E','Z',
	1'O','L','W','H','Q'/, ISIZE/2000/, RJB/-20./,CENTR/-26./
	EQUIVALENCE (MM,SCLEF(1,1)),(V2,V(2)),(V3,V(3)),(N,INP),
	1 (IVI,V1,V),(LETS(13),LW),(LETS(14),LH),(JC,INP(2)),(JS,
	1 INP(3)),(LETS(1),LG),(LETS(2),LS),(LETS(3),LM),(LETS(4)
	1,LD),(LETS(5),LR),(LETS(6),LP),(LETS(7),LA),(LETS(8),LF)
	1,(LETS(9),LE),(LETS(10),LZ),(LETS(11),LO),(LETS(12),LLL)
	1,(IST2,IST(2))
CIRC	CALL ERRSET(0)
CIRC	CALL DPYSET(ISIZE,1)
CIRC	NDP=1
CIRC	IOV=1
	RSZ=0
	GRID=0
39	MCLEF(1)=0
CIRC	CALL DPYCLR
CIRC	CALL DPYOUT(NDP)
	CALL DPYSET(1,IST,4000)
	CALL HYDPOG(1)
C  IF AN OVERLAY HAS BEEN SETUP IT SHOULD STILL DISPLAY AFTER DPYCLR.
C  THIS IS FOR 'Z' (ZERO THE DRAWING)
C DPYSET INITIALIZES GRAPHICS PACKAGE AND EXPANDS CORE FOR BUFFER.
	MM=0
	K=1
17	FORMAT(' *',$)
18	FORMAT(' H=HELP')
	TYPE 18
91	TYPE 17
55	FORMAT(I,2F)
50  	FORMAT(72A1)
500	XSZ=RSZ
	ACCEPT 50,INP
	CALL RREAD(INP,V)      
C V ARRAY HAS ZEROS IF ALPHAS IN INP ARRAY.
	RSZ=V2
	GRID=V3
51	IF(RSZ.EQ.0)RSZ=XSZ
C  TO SAVE SIZE FACTOR WHEN REDRAWING.
	MORE=-1
	CALL LO2UP(N)
	CALL LO2UP(JC)
	CALL LO2UP(JS)
	IF(RSZ.EQ.0)RSZ=9.0
	IF(GRID.NE.0.AND.N.NE.LP)CALL GRIDS
CIRC	DO 191 K=1,14       
	DO 191 K=1,15
C                             G  S  M  D  R  P  A  F  E  Z
191	IF(LETS(K).EQ.N)GO TO(30,36,32,33,32,70,36,79,38,39,
	1 56,11,12,16,32)K
C         O   L  W  H  Q
	IF(N.NE.' ')TYPE 391
	GO TO 91
391	FORMAT(' UNKNOWN COMMAND'/)
C  'O' MAKES CURRENT DPY INTO OVERLAY

16	TYPE 100
C 'HELP'
	GO TO 91

11	CALL LIST(0)
C TYPE OUT LIST OF COORDINATES.
	GO TO 91

12	TYPE 41
C WRITE LIST OF COORDS ON DISK FILE
	CALL A5IN(JC)
	IF(N.NE.LW)GO TO 13
	CALL LIST(JC)
	GO TO 91

CIRC13	OPEN(UNIT=1,FILE=JC)
13	CALL IFILE (1,JC)
14	READ(1,5,END=15)N,JC,JS,JZ
C READ IN EDIT FILE OF COORDS.  N, X, Y, Z   (N IS COUNT NUMB.)
	JZ=JZ*100000000
C JZ=1=INVIS  =2=START FILLER (INVIS)
	CALL REPACK(JC,JS,JZ,MCLEF(N+1))
	GO TO 14
15	MCLEF(1)=N+1
CIRC	CALL DPYCLR
	IST2=0
	CALL DPYSET(1,IST,4000)
	GO TO 334

33	IF(JS.NE.LLL)GO TO 38
	N=LZ
C  DEL=DELETE FROM COMB. FILE.   (JS=LLL)
	GO TO 36
38	KED=N
	MM=MCLEF(1)
	IF(MM.NE.0)GO TO 92
C  ADD TO DRAWING?
	GO TO 3

CIRC56	CALL DPYSET(400,2)
56	CALL POG2
C INITIALIZE THE OVERLAY
CIRC	IOV=2
CIRC	NDP=2
CIRC	CALL RDRAW(2,MCLEF(1),MCLEF)
	CALL RDRAW(3,2,MCLEF(1),MCLEF)
CIRC	IOV=1
CIRC	CALL DPYOUT(NDP)
C SAVE OVERLAY IN SPECIAL MEMORY
	GO TO 91
36 	CALL CMBN
	GO TO 91
32 	IF(JC.EQ.LE)GO TO 12
C RE=READ EDIT FILE FOR VECTORS
	CALL DPYSET(1,IST,4000)
	IST2=0
	CALL SHIFT(MCLEF(2),MCLEF(1),N)
C  FOR ROTATION OR MOVING AND DISTORTING ENTIRE PICTURE
	J=1
	JC=0
	GO TO 333
291	FORMAT(A2,A5)
30 	REREAD 291,NM,NM
	CALL LO2UP(NM)
	IF(JC.EQ.LM)NM=' '
	IF(NM.NE.' ')GO TO 293
130	TYPE 41
	IF(JC.EQ.LM)GO TO 194
	IF(N.EQ.LS)GO TO 194
C 'GET'  REINIT VARIOUS THINGS
	MCLEF(1)=0
	MM=0
	K=1
194	IF(JC.EQ.LM)MORE=0
	JQ=JC
	JC=0
	JM=1
	IF(MCLEF(1).EQ.0)GO TO 193
	JM=MCLEF(1)+1
193	CALL A5IN(NM)
	IF(NM.EQ.' ')NM=LASTNM
	IF(NM.EQ.' ')GO TO 91
	IF(NM.EQ.'B'.OR.NM.EQ.'99')GO TO 91
C  'B' OR '99'  WILL BACKUP
293	LASTNM=NM
	IF(LOOKF(NM).EQ.0)GO TO  130
C  'FAIL' ROUTINE TO CHECK ON LOOKUP    0=FILE NOT FOUND.
	CALL RDSAV(KCLEF,NMLST,M,NM,JST,-1)
C  -1=READ
	J=1
	IF(KCLEF(2).EQ.0)GO TO 290
	TYPE 1100
	ACCEPT 55,J
	J=J+1
C  ITEMS ARE NUMBERED  0 THROUGH 9 (10 ITEMS).
	IF(J.GT.10)GO TO 191
290	IC=KCLEF(J)+JST(KCLEF(J))-1
	IF(IC.GT.1050)TYPE 1110
C1/82	IF(IC.GT.350)TYPE 1110
60	JZ=1
	IF(MORE.EQ.0)JZ=JM
	L=KCLEF(J)-1
	M=JST(L+1)+JZ-1
	IF(MORE.NE.0)GO TO 161
	M=M-1
	L=L+1
161	DO 61 K=JZ,M
	L=L+1
61	MCLEF(K)=JST(L)
	MCLEF(1)=M
1100	FORMAT(' ITEM NUM?'/)
7	IF(MORE)GO TO 70
	DO 771 K=2,JM-1
771	IF(MCLEF(K).GE.200000000)GO TO 772
	GO TO 70
C PUTS FILLER TO END
C  MOVES OUTLINE UP FRONT
772	M=MCLEF(1)
	DO 773 L=K,JM
	M=M+1
773	MCLEF(M)=MCLEF(L)
	K=JM-K  
1774	DO 774 L=JM,M
774	MCLEF(L-K)=MCLEF(L)
	CALL DPYSET(1,IST,4000)
	IST2=0
	GO TO 3

70	IF(N.NE.LP)GO TO 3
CIRC	OPEN(UNIT=1,FILE='PLOT.PLT',MODE='IMAGE')
CIRC	CALL SAVBUF(1)
C WRITES VERSATEC FILE   PLOT.PLT
CIRC	CLOSE(UNIT=1)
CIRC	TYPE 441
CIRC	GO TO 91
CIRC441	FORMAT(' ******* PLOT.PLT WAS WRITTEN *****')
	
3	IF(N.NE.LD)MM=0
C  RESET IF NOT GOING TO DRAWIT
333	IF(N.EQ.LP)GO TO 337
CC	CALL DPYCLR
	IF(N.GE.0)GO TO 337
	IF(N.EQ.LG)GO TO 337
	IF(N.EQ.LM)GO TO 337
	IF(N.NE.LR)GO TO 92
337	IF(JS.EQ.LZ)GO TO 306
	IF(JS.NE.LS)GO TO 338
	CALL SMOOTH(JS)
	GO TO 436
338	IC=-1
	MM=1
	DO 335 K=2,MCLEF(1)
	IF(MCLEF(K).LT.200000000)GO TO 335
	IC=K
	GO TO 334
C FOR 1ST LOC. OF MCLEF IN FILLER
335	CONTINUE
CIRC334	CALL RDRAW(2,MCLEF(1),MCLEF)
334	CALL RDRAW(1,2,MCLEF(1),MCLEF)
C 1=DPYOUT(1)
CIRC	CALL DPYOUT(NDP)
	GO TO 91
79	IF(IC.LT.0)GO TO 91
C  FILLS IT.
C  IC=-1 IF NO FILLER WAS REQUESTED WHILE DRAWING.
	JZ=N
	KK=0
	IF(JC.NE.LS)GO TO 206
C  TYPE 'FS' TO FILL AND SMOOTH
306	CALL SMOOTH(0)
C  SMOOTHS AND FILLS
	GO TO 436
206	RR=RSZ
	DO 205 J=IC,MCLEF(1)
	CALL UNPACK(M,N,LL,MCLEF(J))
	KK=KK+1
	NF(KK)=0
	IF(LL.GE.100000000)NF(KK)=3
	QF(KK)=(M+RJB)*RR
205	RF(KK)=(N+CENTR)*RR
	NF(1)=KK
	CALL FILLQ(QF,RF,NF)
436	GO TO 91

5	FORMAT(12I)
100   FORMAT(' G=GET, GM=GET MORE, S=SAVE, D=DRAW, M=MOVE, R=ROTATE,'/
	1' E=EDIT,   P=PLOT,  RE=READ EDIT FILE,  W=WRITE EDIT FILE'/
	1' LI=LIST COORDINATES'/
	1,' DEL=DELETE ITEM FROM FILE,  O=OVERLAY,  Z=ZERO DRAWING'/,
	1' F=FILL       N1=IMAGE SIZE, N2=1=GRID  -1=DELETE OVERLAY'/)
C  N1=20 TO CHANGE SHAPE

CIRC92 	CALL DPYCLR
C92	CALL HYDPOG(1)
92	CALL DPYSET(1,IST,4000)
CIRC	CALL RDRAW(2,MCLEF(1),MCLEF)
	CALL RDRAW(1,2,MCLEF(1),MCLEF)
C THIS CLEARS FILLER LINES
	CALL DRAWIT
  	N=0
	GO TO 3

403	FORMAT(' WRITE OVER ',A5,'.DMD?  ',$)
41	FORMAT(' TYPE FILE NAME'/)
110	FORMAT(' TOTAL WDS=',I3)
1110	FORMAT(' ********************************',/
	1      ' ***** WARNING - LIMIT=350 ******',/
	1      ' ********************************')
	END